//
//  XBListTest.c
//  数据结构算法和笔试题
//
//  Created by 王国栋 on 16/5/28.
//  Copyright © 2016年 xiaobai. All rights reserved.
//

#include "XBListTest.h"
/**
 *  包含操作 增删改查
 */
void testXBLinkList()
{
    XBLinkNode  LinkNode;
    initXBLinkNode(& LinkNode);//初始化
    //插入元素
    
    printf("开始添加元素:\n");
    for (int i = 0; i<10; i++) {
        
        addItemToXBLinkNode(&LinkNode, (DATATYPE)(i+10));//添加元素
    }
    printXBLinkNodeData(LinkNode);
    
    printf("查找元素12所在的位置 %d \n",findItemInXBLinkNode(LinkNode, 12));
    
    printf("在索引为0的位置插入元素100:\n");
    insertItemInXBLinkNode(&LinkNode, 0, 100);
    
    printXBLinkNodeData(LinkNode);
    
    printf("线性表当前的长度： %d \n",getLengthForXBLinkNode(LinkNode));
    
    printf("删除索引为4的位置的元素:\n");
    deleteItemInXBLinkNode(&LinkNode, 4);
    
    printXBLinkNodeData(LinkNode);
    
    int x ;
    
    printf("获取2号位置的元素的值:\n");
    getItemFromXBLinkNodeByIndex(LinkNode, 2, &x);
    printf("%d \n",x);
    
    printf("替换3号位置的元素为89:\n");
    replaceXBLinkNodeatIdx(&LinkNode, 3, 89);
    
    printXBLinkNodeData(LinkNode);
    
    clearXBLinkNode(&LinkNode);
    
    printXBLinkNodeData(LinkNode);
    printXBLinkNodeData(LinkNode);
}

void testXBArrayList()
{
    XBArrayList  arrayList;
    initXBArrayList(& arrayList);//初始化
    //插入元素
    
    printf("开始添加元素:\n");
    for (int i = 0; i<5; i++) {
        
        addItemToXBArrayList(&arrayList, (DATATYPE)(i+10));//添加元素
    }
    printXBArrayListData(arrayList);
    
    printf("查找元素12所在的位置 %d \n",findItemInXBArrayList(arrayList, 12));
    
    printf("在索引为0的位置插入元素100:\n");
    insertItemInXBArrayList(&arrayList, 0, 100);
    
    printXBArrayListData(arrayList);
    
    printf("线性表当前的长度： %d \n",getLengthForXBArrayList(arrayList));
    
    printf("删除索引为4的位置的元素:\n");
    deleteItemInXBArrayList(&arrayList, 4);
    
    printXBArrayListData(arrayList);
    
    int x ;
    
    printf("获取2号位置的元素的值:\n");
    getItemFromXBArrayListByIndex(arrayList, 2, &x);
    printf("%d \n",x);
    
    printf("替换3号位置的元素为89:\n");
    replaceXBArrayListatIdx(&arrayList, 3, 89);
    
    printXBArrayListData(arrayList);
    
    
}


void testXBStaticList()
{
    
    XBStaticLinkList list;
    initXBStaticList(list);
    //插入元素
    printf("开始添加元素:\n");
    for (int i = 0; i<5; i++) {
       
        addItemToXBStaticLinkList(list, (DATATYPE)(10+i));
    }
    printXBStaticLinkList(list);
    
    printf("查找元素12所在的位置 %d \n",findItemInXBStaticLinkList(list,12));

    printf("在索引为1的位置插入元素100:\n");
    insertItemInXBStaticLinkList(list, 1, 100);
    insertItemInXBStaticLinkList(list, 1, 100);

    printXBStaticLinkList(list);
//    printf("线性表当前的长度： %d \n",get(arrayList));
    
    printf("删除索引为3的位置的元素:\n");
    deleteItemInXBStaticLinkList(list, 3);//(list, 3);
    
    printXBStaticLinkList(list);
    int x ;
    printf("获取2号位置的元素的值:\n");
    getItemFromXBStaticLinkListByIndex(list, 2, &x);
    //get(arrayList, 2, &x);
    printf("%d \n",x);
    
    printf("替换3号位置的元素为89:\n");
    replaceXBStaticLinkList(list, 3, 89);//
    printXBStaticLinkList(list);
    
    clearXBStaticLinkList(list);
    printf("清空后:\n");
    printXBStaticLinkList(list);

}















